package day02;

public class HomeWork {
    public static void main(String[] args) {
        //1)变量的声明----相当于银行开户
        int a;//声明一个整型变量，名为a
        int b,c,d;//声明三个整型变量，名为b，c，d;
        //int a;//编译错误，变量不能同名

        //2)变量的初始化----------相当于给账户存钱
        int e = 250;//声明整型变量e并赋值为250
        int f;//声明整型变量f
        f = 250;//给f赋值为250

        //3)变量的使用-----使用的是账户里面的钱
        int g = 5;
        int h = g + 10;//取出g的值5，加上10后，在赋值给变量h
        System.out.println(h);//输出变量h的值为15
        System.out.println("h");//输出h，双引号中的原样输出
        g = g +10;//在g本身基础上增加10
        System.out.println(g);//输出g的值15

        //int i = 3.14;//编译错误，数据类型必须匹配
        //System.out.println(j);//编译错误，变量j未声明
        int j;
        //System.out.println(j);//编译错误，变量j未初始化

        //4)变量的命名：
        int a1,a_5$,_3c,$_b;
        //int a*b;//编译错误，不能包含*号等特殊符号
        //int 1a;//编译错误，不能以数字开头
        int aa = 5;
        //System.out.println(aA);//编译错误，严格区分大小写
        //int class;// 编译错误，不能使用关键字

        //int k;//不直观，不建议
        //int 年龄;//允许，但不建议
        //int nianling;//既不直观也不专业，必须杜绝
        int age;//建议英文的见名知意
        int score ,myScore,myJavaScore;//建议 小驼峰命名法

        //1)int整型  4个字节  -21亿多到21亿多
        int a2 = 25;//25为整数直接量，默认为int类型
        //int b = 10000000000;//编译错误，100亿默认为int类型，但超出范围了
        System.out.println(5/2);//2
        System.out.println(2/5);//0
        System.out.println(5.0/2);//2.5
        int c1 = 2147483647;//int的最大值
        c1 = c1 + 1;
        System.out.println(c1);//-2147483648(int的最小值），发生了溢出，需要避免

        //2)long长整型，8个字节 很大很大很大
        long a3 = 25L;//25L为长整型直接量，默认为long型
        //long b = 10000000000;编译错误，100亿默认为int类型，但超出了范围
        long c3 = 10000000000L;//100亿为长整型直接量
        long d1 = 1000000000*2*10L;
        System.out.println(d1);//200亿
        long e1 = 100000000*3*10L;
        System.out.println(e);//不是300亿
        long f1 = 1000000000L*3*10;//运算若有可能溢出，建议在一地个数字后加L
        System.out.println(f);//300亿

        //3)double浮点型  8个字节 很大很大很大
        double a5 = 3.14159;//这个数为浮点数直接量，默认为double类型
        float b3 = 3.14159F;//3.14159F为float型----了解即可

        double c5 = 3.0,d5 = 2.9;
        System.out.println(c5-d5);//0.10000000000000009,有可能发生舍入误差

        //4)boolean布尔型 1个字节
        boolean v = true;//true为布尔型直接量
        boolean n = false;//false为布尔型直接量
        //boolean c = 25;//编译错误，布尔型只能赋值为true或false

        //5）char 字符型 2 个字节
        char x1 = '女';//字符女
        char x2 = 'f';//字符f
        char x3 = '6';//字符6
        char x4 = '*';//字符*
        //char x5 = 女;//编译错误，字符型直接量必须放在单引号中
        //char x6 = '';//编译错误，必须有字符
        //char x7 = '女性';//编译错误，只能有一个字符

        char x8 = '\\';
        System.out.println(x8);

        int y = 5;
        long w = y;//自动类型转换
        int l = (int)w;//强制类型转换

        long d0 = 5;//自动类型转换
        double k1 = 5;//自动类型转换

        long k2 = 10000000000L;
        int g1 = (int)f;
        System.out.println(g1);//1410065408,强转有可能发生溢出
        double h5 = 25.678;
        int i = (int)h5;
        System.out.println(i);//25，强转有可能丢失精度

        byte o1 = 5;
        byte o2 = 6;
        byte o3 = (byte) (o1+o2);
        System.out.println(2+2);//4
        System.out.println(2+'2');//52
        System.out.println('2'+'2');//100


    }
}
